package cn.zebra.dev.shop.module.product.dto;

import cn.zebra.dev.product.module.sku.entity.ProductSkuAttributeEntity;
import cn.zebra.dev.product.module.sku.entity.ProductSkuEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;

@Getter
@Setter
@ToString
public class ProductDTO {

    @ApiModelProperty(value = "商品类型")
    private Integer productType;

    @ApiModelProperty(value = "商品名称")
    private String productName;

    @ApiModelProperty(value = "商品短名称")
    private String shortName;

    @ApiModelProperty(value = "商品编号")
    private String productSn;

    @ApiModelProperty(value = "商品图片地址")
    private String productImage;

    @ApiModelProperty(value = "商品视频地址")
    private String productVideo;

    @ApiModelProperty(value = "商品详情(富文本)")
    private String productDetails;

    @ApiModelProperty(value = "详情图片路径")
    private String detailImg;

    @ApiModelProperty(value = "店铺id")
    private Long shopId;

    @ApiModelProperty(value = "商品总库存")
    private Long totalNum;

    @ApiModelProperty(value = "商品已售数量")
    private Long sellNum;

    @ApiModelProperty(value = "是否上架")
    private Boolean saleFlag;

    @ApiModelProperty(value = "商品上架时间")
    private LocalDateTime saleTime;

    @ApiModelProperty(value = "单位名称")
    private String unitName;

    @ApiModelProperty(value = "单价")
    private BigDecimal unitPrice;

    @ApiModelProperty(value = "商品审核说明")
    private String statusRemark;

    @ApiModelProperty(value = "商品状态-1:禁售 0:未审核 1:已审核")
    private Integer status;

    @ApiModelProperty(value = "是否显示")
    private Boolean showFlag;

    @ApiModelProperty(value = "商品分类id")
    private Long categoryId;

    @ApiModelProperty(value = "商品分类名")
    private String categoryName;

    @ApiModelProperty(value = "最低价")
    private BigDecimal minPrice;

    @ApiModelProperty(value = "最高价")
    private BigDecimal maxPrice;

    @ApiModelProperty(value = "购买消耗积分")
    private Long point;

    @ApiModelProperty(value = "购物完成赠送积分")
    private Long returnPoint;

    @ApiModelProperty(value = "购买增加经验值")
    private Long levelExp;

    @ApiModelProperty(value = "快递费")
    private BigDecimal expressFee;

    @ApiModelProperty(value = "店铺名")
    private String shopName;

    @ApiModelProperty(value = "店铺封面")
    private String shopImage;

    @ApiModelProperty(value = "店铺地址")
    private String shopAddress;

    private List<ProductSkuEntity> skuList;

    private List<ProductSkuAttributeEntity> attrEntities;

    private List<ProductCategoryDTO> categoryList;
}
